﻿//ITableSetWrapper.cs
//Copyright (c) 2013 StockSharp LLC, all rights reserved.
//This code module is part of StockSharp library.
//This code is licensed under the GNU GENERAL PUBLIC LICENSE Version 3.
//See the file License.txt for the license details.
//More info on: http://stocksharp.com

namespace StockSharp.Plaza.Wrappers
{
	/// <summary>
	/// Работа с клиентской схемой репликации. 
	/// </summary>
	interface ITableSetWrapper
	{
		/// <summary>
		/// Инициализация объекта и загрузка из ini-файла клиентской схемы репликации.
		/// </summary>
		/// <param name="cfgName">Файл, содержащий клиентские схемы репликации.</param>
		/// <param name="replScheme">Имя клиентской схемы репликации.</param>
		void Init(string cfgName, string replScheme);

		/// <summary>
		/// Номер жизни схемы базы данных. 
		/// </summary>
		int LifeNum { get; set; }

		///// <summary>
		///// Сохранение номера жизни схемы в ини файле.
		///// </summary>
		///// <param name="iniFileName">Файл, содержащий клиентские схемы репликации.</param>
		//void UpdateLifeNumber(string iniFileName);

		/// <summary>
		/// Задать идентификатор последнего изменения таблицы.
		/// </summary>
		/// <param name="tableName">Имя таблицы.</param>
		/// <param name="revision">Идентификатор последнего изменения таблицы.</param>
		void UpdateRevision(string tableName, long revision);
	}

	class TableSetWrapper32 : ITableSetWrapper
	{
		internal readonly P2ClientGateMTA32.CP2TableSet TableSet;

		public TableSetWrapper32()
		{
			TableSet = new P2ClientGateMTA32.CP2TableSet();
		}

		void ITableSetWrapper.Init(string cfgName, string replScheme)
		{
			TableSet.InitFromIni2(cfgName, replScheme);
		}

		//void ITableSetWrapper.UpdateLifeNumber(string iniFileName)
		//{
		//    TableSet.SetLifeNumToIni(iniFileName);
		//}

		void ITableSetWrapper.UpdateRevision(string tableName, long revision)
		{
			TableSet.rev[tableName] = revision;
		}

		int ITableSetWrapper.LifeNum
		{
			get { return TableSet.LifeNum; }
			set { TableSet.LifeNum = value; }
		}
	}

	class TableSetWrapper64 : ITableSetWrapper
	{
		internal readonly P2ClientGateMTA64.CP2TableSet TableSet;

		public TableSetWrapper64()
		{
			TableSet = new P2ClientGateMTA64.CP2TableSet();
		}

		void ITableSetWrapper.Init(string cfgName, string replScheme)
		{
			TableSet.InitFromIni2(cfgName, replScheme);
		}

		//void ITableSetWrapper.UpdateLifeNumber(string iniFileName)
		//{
		//    TableSet.SetLifeNumToIni(iniFileName);
		//}

		void ITableSetWrapper.UpdateRevision(string tableName, long revision)
		{
			TableSet.rev[tableName] = revision;
		}

		int ITableSetWrapper.LifeNum
		{
			get { return TableSet.LifeNum; }
			set { TableSet.LifeNum = value; }
		}
	}
}